package com.yida.gwj.scene.expend.mapper;

import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.yida.gwj.common.domain.GwjBaseHouse;
import com.yida.gwj.scene.expend.domain.GwjSceneExpendBusinessHouse;
import com.yida.gwj.scene.expend.domain.GwjSceneExpendBusinessHouseAndOwner;

/**
 * 业务房屋信息（旧支出模块）Mapper接口
 * 
 * @author hmh
 * @date 2023-08-14
 */
public interface GwjSceneExpendBusinessHouseMapper {
    /**
     * 查询业务房屋信息（旧支出模块）
     * 
     * @param bizHouseId 业务房屋信息（旧支出模块）主键
     * @return 业务房屋信息（旧支出模块）
     */
    public GwjSceneExpendBusinessHouse selectGwjSceneExpendBusinessHouseByBizHouseId(Long bizHouseId);

    /**
     * 查询业务房屋信息（旧支出模块）
     * 
     * @param houseCode 房屋标识码
     * @return 业务房屋信息（旧支出模块）
     */
    public GwjSceneExpendBusinessHouse selectGwjSceneExpendBusinessHouseByBizIdAndHouseCode(@Param("bizId") Long bizId, @Param("houseCode") String houseCode);

    /**
     * 查询业务房屋信息（旧支出模块）列表
     * 
     * @param gwjSceneExpendBusinessHouse 业务房屋信息（旧支出模块）
     * @return 业务房屋信息（旧支出模块）集合
     */
    public List<GwjSceneExpendBusinessHouse> selectGwjSceneExpendBusinessHouseList(GwjSceneExpendBusinessHouse gwjSceneExpendBusinessHouse);

    /**
     * 新增业务房屋信息（旧支出模块）
     * 
     * @param gwjSceneExpendBusinessHouse 业务房屋信息（旧支出模块）
     * @return 结果
     */
    public int insertGwjSceneExpendBusinessHouse(GwjSceneExpendBusinessHouse gwjSceneExpendBusinessHouse);

    /**
     * 修改业务房屋信息（旧支出模块）
     * 
     * @param gwjSceneExpendBusinessHouse 业务房屋信息（旧支出模块）
     * @return 结果
     */
    public int updateGwjSceneExpendBusinessHouse(GwjSceneExpendBusinessHouse gwjSceneExpendBusinessHouse);

    /**
     * 根据业务ID和房屋标识码修改业务房屋信息（旧支出模块）
     * 
     * @param gwjSceneExpendBusinessHouse 业务房屋信息（旧支出模块）
     * @return 结果
     */
    public int updateGwjSceneExpendBusinessHouseByHouseCodeAndBizId(GwjSceneExpendBusinessHouse gwjSceneExpendBusinessHouse);

    /**
     * 删除业务房屋信息（旧支出模块）
     * 
     * @param bizHouseId 业务房屋信息（旧支出模块）主键
     * @return 结果
     */
    public int deleteGwjSceneExpendBusinessHouseByBizHouseId(Long bizHouseId);

    /**
     * 批量删除业务房屋信息（旧支出模块）
     * 
     * @param bizHouseIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteGwjSceneExpendBusinessHouseByBizHouseIds(Long[] bizHouseIds);

    /**
     * 20230816
     * 
     * 修改房屋选中状态
     * 
     * @param selectFlag 是否选中 1：已选择，0：未选择
     * @param areaId 地区ID
     * @param houseCodes 房屋标识码
     * @return
     */
    public int changeHouseIfSelected(@Param("bizId") Long bizId, @Param("selectFlag") String selectFlag, @Param("areaId") Long areaId, @Param("houseCodes") String[] houseCodes);

    /**
     * 20230816
     * 
     * 根据业务ID批量新增房屋信息
     * 
     * @param bizId 业务ID
     * @param houseList 房屋列表
     * @return
     */
    public int insertBatchGwjSceneExpendBusinessHouseByBaseHouse(@Param("bizId") Long bizId, @Param("houses") List<GwjBaseHouse> houseList);

    /**
     * 20230816
     * 
     * 根据业务ID删除房屋信息
     * 
     * @param bizId 业务ID
     * @return
     */
    public int deleteGwjSceneExpendBusinessHouseByBizId(Long bizId);

    /**
     * 20230816
     * 
     * 根据业务ID获取实际分摊金额统计数据
     * 
     * @param bizId 业务ID
     * @param areaId 地区ID
     * @return
     */
    public BigDecimal selectActualAllocationMoneyTotalBybizIdAndAreaId(@Param("bizId") Long bizId, @Param("areaId") Long areaId);

    /**
     * 20230817
     * 
     * 根据业务ID查询房屋类型
     * 
     * @return
     */
    List<String> selectHouseUseType(Long bizId);

    /**
     * 20230817
     * 
     * 根据业务ID统计房屋数据
     * 
     * @param bizId
     * @return
     */
    Map<String, BigDecimal> countHoustData(@Param("bizId") Long bizId, @Param("selectFlag") String selectFlag);

    /**
     * 20230816
     * 
     * 根据业务ID批量新增房屋信息
     * 
     * @param bizId 业务ID
     * @param houseList 房屋列表
     * @return
     */
    public int upBatchGwjSceneExpendBusinessHouseByBaseHouse(List<GwjSceneExpendBusinessHouse> houseList);

    /**
     * 根据条件查询房屋数据
     * 
     * 20230821
     * 
     * hmh
     * 
     * @param bizId
     * @param areaId
     * @param selectFlag
     * @return
     */
    public List<GwjSceneExpendBusinessHouseAndOwner> selectGwjSceneExpendBusinessHousesAndOwners(@Param("bizId") Long bizId, @Param("areaId") Long areaId, @Param("selectFlag") String selectFlag);

    /**
     * 检查业务信息
     * 
     * @param bizId 业务ID
     * @return
     */
    List<LinkedHashMap<String, Object>> checkOwnerInfo(Long bizId);

}
